A network having numerous network elements can provide voice, data, and video communications across a pure packet network. Typically, the packets conform to a single protocol of a single layer of the International Organization for Standardization's Open System Interconnection (“OSI”) Model. The single protocol may be the internet protocol (IP). The network elements can be broadband loop carriers that include switching, routing, aggregation, and plain old telephone service (POTS) functionality. High speed Internet, VoIP, IP video and gaming are some of the increasing number of applications that rely on an IP service delivery model. Advanced, layer specific service management, fault isolation, and pro-active diagnostic tools are some of the features that are required for day-to-day network operations.
In order for a system to perform successfully in a user environment, it is necessary that the user be able to configure the system to operate as desired, and to be able to observe the network elements for troubleshooting, monitoring, and management purposes. Management can be effected through a variety of user interfaces. The most common is Command Line Interface (CLI), where configuration and display commands are entered in text mode and promptly executed. Another common interface is Simple Network Management Protocol (SNMP) where configuration and monitoring data is transmitted over the network.
A Java based model provides a much broader and more abstract framework in a Java platform. A Java Virtual Machine (JVM) interprets and executes Java byte code that has been generated by a compiler. In Java, a “class” represents a set of instructions. A primordial class loader loads a class into the JVM whenever the class has been referenced. The primordial class loader locates the class to be loaded by locating the appropriate class path. The class is read from a jar file, a collection of classes, or from a local file system referenced in the class path.
A Java remote method invocation (RMI) client server model can be the underlying architecture for a management application. An external entity in order to manage the network elements in the network communicates with exposed RMI application programming interfaces (APIs). An API is a source code interface that a computer system or program library provides in order to support requests for services from a software application. An API is specified in terms of a programming language that can be interpretative or compiled when an application is built, rather than an explicit low level description of how data is laid out in memory. A Java RMI API is a mechanism to invoke a method or function call on an object that exists in another address space. The other address space can be on the same machine or a different machine. The invoking entity is called a client while the invoked entity is called a server. A managing entity that manages a network of network elements should have remote interfaces and data classes of a management RMI API available in an application path of the managing entity. The interfaces and data classes of the management RMI API are usually made available in a jar file. The interfaces and data classes in the jar file may vary across different versions of the management software. The managing entity needs to have multiple versions of jar files to manage network elements that have different versions of the management software.
The fact that the remote interfaces and the data classes belong to the same namespace (e.g., a directory in an operating system) and can be different across various software versions presents a great challenge for the managing entity. A class loader may load a class with the correct namespace but corresponding to the wrong software version being run by a network element. Also, the different versions of the management software may require different parameters in order to manage the network element associated with a particular version of the management software. For example, sending a management call appropriate for software version A to a network element running software version B may result in an exception condition causing a crash or other error.